软件系统设计方案 您所在的位置:网站首页 服务器文件管理系统 软件设计方案怎么写 软件系统设计方案

软件系统设计方案

2024-06-26 14:01| 来源: 网络整理| 查看: 265

1.前言

本篇博客主要对工程实践项目,进行软件系统分析和设计,最终形成系统概念原型。

项目介绍:设计一个高并发的秒杀系统。该系统主要是针对库存来设计的系统,用户在规定时间内可以对商品进行抢购,同时系统要防止出现超卖和少卖等情况的出现。系统的主要功能就是记录用户购买的明细和对库存及时响应做到减库存等,实现大流量下的高并发场景。

2.项目设计方案 2.1前端设计

前端是一个系统中离用户最近的部分,为用户提供信息展示,交互逻辑等。前端的设计主要包括:秒杀详情页、查看商品列表、UI设计、和交互逻辑。

秒杀详情页:主要划分两个展示区:活动场次信息区、活动商品列表区。活动场次信息区里可以点击场次按钮切换场次;活动商品列表区里可以点击某个商品的按钮查看商品详情。

查看商品列表:主要包括商品图片、商品名称、广告语、库存信息、原价、活动价、秒杀按钮。用户可能直接点击商品按钮,这里会出现 3 种情况:

活动已开始,对于已登录用户来说,按钮提示“立即抢购”,点击后会跳转到商品详情页; 活动已开始,对于未登录用户来说,按钮提示“登录后抢购”,点击后会跳转到登录页;   活动未开始,按钮则会提示“提醒我”,点击后就会订阅活动通知。

UI 设计:主要包含秒杀系统各个功能页面的内容和布局,大致有 3 类:首页入口、秒杀活动页、商品详情页。

交互逻辑:主要包括页面上各个部分对用户行为的交互方式和响应结果,它是基于 UI 设计页面来进行的。我们还是以首页入口、秒杀活动页、商品详情页来介绍。

首先来看首页入口,它的交互逻辑是“点击秒杀广告位进入秒杀活动页”。

秒杀活动页,它存在四大交互逻辑,流程图如下

当用户进入活动页,如果当前页面显示的就是他想要的场次信息,那么他就会参与其中。 活动场次切换,如果当前显示页面不是他想要的,用户则会点击切换场次,这就是用户点击切换,还有一种是自动切换,它需要设定定时任务判断时间,到了时间则自动切换,切换后系统自动重新获取活动场次信息。 接下来,为了找到自己想买的商品,用户会点击活动详情区的商品,进入到商品详情页。 活动详情区商品的按钮。如果是活动已开始,未登录用户会提示“登录后购买”,点击则会跳转登录页;如果是已登录用户,则会提示“立即抢购”,点击后会跳转到商品详情页。如果活动未开始,则会提示“提醒我”,点击订阅活动通知。

商品详情页上的交互逻辑主要有三类,流程图为:

点击配送区修改按钮,选择配送地区; 点击规格按钮,选择商品对应规格; 点击秒杀/购买按钮。这里会出现两类状态,一类是活动进行中,一类是活动未进行。 2.2后端设计 2.2.1 接口设计

秒杀活动信息列表接口 Push 订阅接口 商品活动信息接口 秒杀抢购接口

秒杀活动信息列表接口:它主要返回每场活动信息,具体有开始时间、结束时间、商品列表;商品列表里的每个商品信息包括商品 ID、商品名称、描述、图片、原价、活动价、库存状态、订阅人数以及判断用户是否登录。

Push 订阅接口,主要是传入商品 ID ,返回已订阅的人数。

商品活动信息接口,主要是传入商品 ID 和配送区,返回商品活动信息和用户是否登录。其中商品活动信息有是否参加秒杀活动、秒杀活动开始时间和结束时间、活动价格多少、是否还有库存、用户是否登录。

抢购接口,主要是传入商品 ID,返回抢购结果。

除了上面的后端接口设计来对应前端的设计外,系统还需要管理后台,来对秒杀活动的专题、场次、商品等进行管理,为后端接口提供活动信息数据。

对于管理后台来说,主要负责增删改查的操作,因此后台接口的设计主要如下所示。

功能 查询接口 增加接口 修改接口 删除接口 上线接口 下线接口 总计 专题管理 1 1 1 1 1 1 6 场次管理 1 1 1 1 1 1 6 商品管理 1 1 1 1 0 0 4 2.3软件架构设计

软件架构设计风格有很多,比如三层架构、MVC架构和MVVM架构以及DDD(Domain Drive Design,领域驱动设计).

本项目主要采用三层架构来设计,将系统分为表现层,业务逻辑层和数据层。

表现层

表现层是指用户可以通过哪些方式使用系统功能。秒杀系统的主要使用者有:消费者、管理员。其中消费者可以通过电脑 Web 端、手机 Web 端、手机 App 端获取秒杀的活动信息、商品信息;管理员可以从电脑 Web 端访问管理后台管理秒杀活动。

逻辑层

逻辑层主要是和业务逻辑相关,系统的前端功能主要包括有用户登录、查看活动、订阅通知、查看商品、抢购、下单等;管理后台的功能主要包括有专题管理、场次管理、商品管理、库存管理、价格管理、限购管理等。

数据层

数据层是指系统的业务逻辑需要处理哪些数据。秒杀系统的数据包括配置数据和用户数据,其中配置数据主要是活动信息和商品信息,用户数据主要是用户订单和用户信息。

2.4 项目设计总结

本系统主要的应用场景是商品的秒杀,具有用户量大、高并发的特点,因此页面需要采用前后端分离、动静数据分离的方式,静态资源和静态数据由 CDN(Content Delivery Network,内容分发网络)和前端缓存,尽量减少对后端的压力。

管理后台基本上是增删改查的操作,接口设计最好符合 RESTFul 风格,查询接口支持批量查询和单个查询等。

项目初步采用三层架构设计,但是一个良好的软件必然是经过好的软件设计,并不断重构、迭代的,因此在后面的过程中打算对项目进行DDD领域驱动设计。

系统整体的设计图如下:

 3.视图 3.1分解视图

分解视图用软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。秒杀系统可以分解成商品管理、活动管理、抢购下单管理、数据库管理和后台管理,分解视图如下:

 

 3.2依赖视图

依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。根据分解视图的五大模块之间的关系,相应的依赖视图如下。

 

 3.3泛化视图

 泛化视图展现了软件模块之间的一般化或具体化的关系,典型的例子就是面向对象分析和设计方法中类之间的继承关系。值得注意的是,采用对象组合替代继承关系,并不会改变类之间的泛化特征。因此泛化是指软件模块之间的一般化或具体化的关系,不能局限于继承概念的应用。

泛化视图有助于描述软件的抽象层次,从而便于软件的扩展和维护。比如通过对象组合或继承很容易形成新的软件模块与原有的软件架构兼容。

系统的泛化视图如下:

 

3.4执行视图

执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。系统流程图如下:

 3.5实现视图

实现视图是描述软件架构与源文件之间的映射关系。一般我们通过目录和源文件的命名来对应软件架构中的包、类等静态结构单元,这样典型的实现视图就可以由软件项目的源文件目录树来呈现。

实现视图有助于码农在海量源代码文件中找到具体的某个软件单元的实现。实现视图与软件架构的静态结构之间映射关系越是对应的一致性高,越有利于软件的维护,因此实现视图是一种非常关键的架构视图。

本系统的实现视图如下:

 项目总览实现视图:

Controller层实现视图:

 

Dao层实现视图:

 

 

Service层实现视图:

 

Error错误处理和Response响应实现视图:

 

前端页面实现视图:

 

测试:

 

3.6部署视图

部署视图是将执行实体和计算机资源建立映射关系。这里的执行实体的粒度要与所部署的计算机资源相匹配,比如以进程作为执行实体那么对应的计算机资源就是主机,这时应该描述进程对应主机所组成的网络拓扑结构,这样可以清晰地呈现进程间的网络通信和部署环境的网络结构特点。当然也可以用细粒度的执行实体对应处理器、存储器等。部署视图有助于设计人员分析一个设计的质量属性,比如软件处理网络高并发的能力、软件对处理器的计算需求等。

系统的部署视图如下。

3.7工作分配视图

工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在个项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。

系统的工作分配视图如下。

 4.数据库设计

数据架构通常用 E-R 图(Entity Relationship Diagram,实体-联系图)表示,我们通常用它来表示数据对象与属性、用户之间的关系。

秒杀系统主要有两大主要数据:活动信息、商品信息和订单信息。

包含的类和属性有:

用户:用户id,账号,密码,邮箱,电话,地址信息等 商家:商家id,商家名称,商品数量,商品价格等 秒杀商品:商品id,秒杀价格,库存数量,秒杀开始时间,秒杀结束时间 订单信息:用户id,商品id,收获地址id,商品数量,商品单价,订单创建时间,支付时间

我们将这些数据绘制成 E-R 图,如下图所示:

在数据库中进行相关表的设计,对概念模型进行具体实现和表示。相关的数据表如下所示:

  user:买家用户表 

属性说明:

uid username password email phone address 用户id 用户名 密码 邮箱 电话 地址信息

 

sellers:商家信息表

属性说明:

seller_id seller_name count price 商家id 商家名称 库存数量 价格

product:商品信息表

id goods_id miaosha_price stock_count start_date end_date 商家id 商品id 秒杀价格 库存数量 秒杀开始时间 秒杀结束时间

orderitem:订单信息表

item_id user_id goods_id goods_count goods_price create_time pay_date 订单id 用户id 商品id 数量 单价 订单创建时间 支付时间

miaosha_order:秒杀订单表

id user_id order_id goods_id 秒杀订单id 用户id 订单id 商品id

5.系统运行环境和技术选型 5.1系统运行环境

浏览器:包括IE浏览器、chrome浏览器、Firefox浏览器、Safari浏览器等;

操作系统:安卓、苹果手机、windows XP、windows7、windows8、windows10、Linux系统等。

5.2技术选型说明

本系统是实现一个支持大流量高并发的秒杀系统的设计,并部署到云端运行,运用分布式对系统进行性能优化,实现一定的安全策略保证系统的安全等,具体包括:

1.硬件部署配置:云端部署,线程池优化、keepalive优化

2.实现代码及中间件优化,实现查询优化、redis缓存优化、本地缓存优化、lua缓存优化,cdn优化,交易优化等

3.实现系统过载保护,做到防刷限流和对流量高并发时的相应处理等

4.运用分布式进行会话优化,动静分离优化等

项目开发运用到的技术有:

后端:SpringBoot2.0、MyBatis等;

前端:Bootstrap、Thymeleaf;

中间件:Redis、RabbitMQ等;

数据库:Mysql、Redis;

服务器:阿里云ECS

6.系统概念原型的核心工作机制

概念原型是一种虚拟的、理想化的软件产品形式。

  概念原型 = 用例 + 数据模型

在本实践项目中,有买家用户user用例和商家seller用例;数据模型有:买家用户表、商家信息表、商品信息表、订单信息表和秒杀订单表。因此,概念模型的工作过程可以概括为如下:

  商家创建秒杀活动信息,对相关商品设置秒杀开始结束时间和秒杀价格以及商品数量;用户需要注册登录系统后,再对感兴趣的秒杀商品进行查看信息,如果还有库存的情况下,用户可以对商品进行抢购,同时数据库中的相关商品库存会做出及时的改变。用户创建订单后,需要在规定的时间内进行付款操作,否则,库存中的商品会还原对应的数量。用户付款后,商家会核实订单信息,然后将商品发货给用户。

7.总结

以上内容结合工程实践项目,对秒杀系统设计方案中所蕴含的软件结构特点进行分析,比如软件架构风格与策略等。并采用不同的视图来描述项目的软件系统概念原型,比如分解视图、依赖视图、泛化视图、执行视图、实现视图、部署视图、工作分配视图等,同时对数据库做出设计,最后说明了系统运行环境和技术选型,举例说明了系统概念原型的核心工作机制。

8.参考资料

https://gitee.com/mengning997/se

http://blog.sina.com.cn/s/blog_ec1f61c60102virk.html

end~

 

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有